1. Field of the Invention
This invention relates to providing logical blocks of data stored by a virtual machine for access by a server so that operations can be offloaded from the computer hosting the virtual machine onto the server for execution.
2. Description of the Related Art
Typically, computers are dedicated to individuals or to specific applications. For example, an individual owns or is assigned his or her own personal computer (PC). Each time a business hires an employee whose job entails access to a computer, a new PC would be purchased and installed for that new hire. In other cases, a PC or server may be used to perform a specific task. For example, a corporation could have a server for hosting the company's web site, another server for handling emails, and yet another server for handling financial transactions. This one-to-one paradigm was simple, straightforward, flexible, and readily upgradeable. However, one drawback to this set-up is that it is inefficient from a computer resource perspective.
The inefficiency stems from the fact that most software applications do not fully utilize the full processing potential of the computer upon which that software is installed. Software applications do not push the envelope set by hardware constraints. Furthermore, some applications may consume a great deal of processing power, while other computer applications are inherently less computing intensive. When the PC or server is running less computationally intensive applications, much of its hardware resources are underutilized. Furthermore, given hundreds or thousands of computers networked in an enterprise, the cumulative effect of the amount of wasted computing resources adds up.
In an effort to take advantage of all the underutilized computing resources, there have been efforts to design “virtual” machines. Basically, a virtual machine entails loading a piece of software onto a physical “host” computer so that more than one user can utilize the resources of that host computer. In other words, the virtual software package is loaded onto one or more physical host computers so that the processing resources of the host computers can be shared amongst many different users. By sharing computing resources, virtual machines make more efficient use of existing computers. Moreover, each user accesses the host computer through their own virtual machine. From the viewpoint of the user, it appears as if they were using their own computer. Users can continue to operate in a manner that they had grown accustomed to in interacting with computers. Thus, rather than buying, installing, and maintaining new computers, companies can simply load virtual machine software to get more leverage off their existing computers. Furthermore, virtual machines do not entail any special training because they run transparent to the user. In addition, virtual machines have the ability to run multiple instances of different operating systems concurrently on the same host or a group of hosts.
Unfortunately, there is one drawback manifest in exploiting virtual machines to their full potential. Because virtual machines are designed to maximize the most efficient use of the computing resources, there is typically not very much spare computing resources left over. Spare computing resources are often used to host another virtual machine for another user or application. It is this very economic efficiency which poses serious issues with certain types of applications. Some applications are run infrequently, but when they do execute, these applications are extremely computing intensive.
For example, backup applications are often used to backup a company's data. The data is backed up periodically and stored in backup files so that if there happens to be a computer crash or disk failure, user error (e.g., accidental file deletes), administration errors, etc., important data is not irretrievably lost. Backing up files is an important function, but it only needs to be run periodically. However, when it does run, it can consume a great deal of computing resources in terms of input/output (I/O) and so processing bandwidth, and network bandwidth. Furthermore, backups are typically run within a certain time window, usually during non-peak times. This poses a problem with virtual machines because if all production servers of a data center were to be backed up at the same time, the backup process would overwhelm the capabilities of the physical host computers. What normally would take hours for backup operations running on a normal, non-virtualized server could take substantially longer for servers hosting virtual machines. Not only would the backup operations take longer to perform on virtualized servers, the backup operations could seriously degrade the performance of applications being run on these virtual machines. Furthermore, the transfer of data during backups could congest the computer network and slow down normal network traffic. And one cannot simply add a dedicated physical server to offload the backup operations because the physical server has no knowledge of how to access the data stored by the virtual machines.